home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 12 / BBS in a box XII-1.iso / Files / Unstuffers / Other Compression / MacGzip 0.21-src-c.sit / macgzip_021-src / macos / think / DoOpen.c next >
Encoding:
C/C++ Source or Header  |  1993-12-10  |  1.7 KB  |  97 lines  |  [TEXT/KAHL]

  1. /*
  2.  * Copyright (C) 1993  SPDsoft
  3.  * 
  4.  */
  5.  
  6. #include "thePrefs.h"
  7. #include "MacErrors.h"
  8.  
  9. #include <string.h>
  10. #include <stdio.h>
  11.  
  12. #define EMPTY_STR "\0           "
  13.  
  14. long GvRefNum;
  15.  
  16. extern int gzip_main (int argc, char **argv);
  17.  
  18. OSErr DoOpen( Str255 fName, long vRefNum)
  19. {
  20.     int argc;
  21.     char *argv[5]={"gzip",EMPTY_STR,NULL,NULL,NULL};
  22.  
  23.     char sTemp[256];
  24.     int result;
  25.     
  26.     ParamBlockRec myParamBlock;
  27.  
  28. /*********** ResFork ***************/
  29.  
  30.     myParamBlock.fileParam.ioCompletion=NULL;
  31.     myParamBlock.fileParam.ioNamePtr=fName;
  32.     myParamBlock.fileParam.ioVRefNum=vRefNum;
  33.     myParamBlock.fileParam.ioFRefNum=0;
  34.     myParamBlock.fileParam.ioFDirIndex=0 ;
  35.     
  36.     sprintf(sTemp,"Discard Resource Fork: %#s?",fName);
  37.     
  38.     PBGetFInfo( &myParamBlock, false );
  39.     if ( myParamBlock.fileParam.ioFlRLgLen != 0 )
  40.     {
  41.         if ( Cask( sTemp ) == cancel )
  42.             return(128);
  43.     }
  44.  
  45.  
  46. /*********** args ***************/
  47.     argc=1;
  48.     
  49. /*********** 1st arg ***************/
  50.  
  51.     strcpy(argv[argc],"-N");
  52.  
  53.     if (!currPrefs.compress)                            /* gunzip */
  54.     {
  55.         strcat(argv[argc],currPrefs.ascii?"da":"d");    /* ascii? */
  56.     }
  57.     else                                                /* gzip */
  58.     {
  59.         sprintf(argv[argc],"-%d",currPrefs.level);        /* # */
  60.     }
  61.  
  62.     if(currPrefs.force)
  63.         strcat(argv[argc],"f");                            /* force */
  64.     
  65.     argc++;
  66.     
  67. /*********** 2nd arg ?**************/
  68.  
  69.     if ( *currPrefs.suffix != 0x00 )
  70.     {
  71.         sprintf((char*)sTemp,"-S%#s",(char*)currPrefs.suffix);
  72.         argv[argc]=(char*)sTemp;
  73.         argc++;
  74.     }
  75.  
  76. /*********** next arg ***************/
  77.  
  78.     PtoCstr(fName);
  79.     argv[argc]=(char*)fName;
  80.     argv[++argc]=NULL;
  81.     
  82. /*********** do it ***************/
  83.  
  84.     SetVol( nil, vRefNum);
  85.     GvRefNum=vRefNum;
  86.     
  87.     result = gzip_main ( argc, argv );
  88.     
  89. /*********** creator & other ***************/
  90.  
  91.     CtoPstr(fName);
  92.  
  93.     return( result );
  94.  
  95. }
  96.  
  97.